<?php
class Member extends EMongoDocument {
	// Khoi tao du lieu
	public $email = "";
	public $password = "";
	public $type_member = "";
	public $create_date = 0;


	public static function model($className=__CLASS__){
		return parent::model($className);
	}

	// This method is required!
	public function getCollectionName(){
		return 'tbl_member';
	}

	public function rules(){
		$rules = array();
		$rules[] = array("email", "required","message" => "vui lòng nhập email");
		$rules[] = array("email", "email","message" => "email không hợp lệ");
		$rules[] = array("email", "checkEmailExists","message" => "email đã được sử dụng");
		$rules[] = array("password", "required","message" => "vui lòng nhập mật khẩu");
		$rules[] = array("password", "length","min" => 6,"tooShort" => "mật khẩu phải lớn hơn 6 ký tự");
		if(isset($this->re_password)){
			$rules[] = array("re_password", "required","message" => "nhập lại mật khẩu");
			$rules[] = array("re_password", "compare","compareAttribute" => "password","message" => "Mật khẩu không trùng khớp");
		}
		if(isset($this->verifyCode)){
			$rules[] = array('verifyCode', 'captcha', 'on'=>'insert',"message" => "mã bảo mật không đúng");
		}
		return $rules;
	}

	public function checkEmailExists($attribute,$param){
		if(!empty($this->$attribute)){
			$check = $this->findByAttributes(array($attribute => $this->$attribute));
			if(is_object($check)){
				$this->addError($attribute,$attribute." đã tồn tại");
				return false;
			}
			return true;
		}
	}

	public function attributeLabels(){
		return array(
			'email' => 'Email',
			'password' => 'Mật khẩu',
			're_password' => 'Nhập lại MK',
			'verifyCode' => 'Mã bảo mật',
		);
	}

	public function search(){
		$cond = new EMongoCriteria;
		if(!empty($this->type_member)){
			$cond->type_member = $this->type_member;
		}
		if(!empty($this->email)){
			$cond->email = new MongoRegex("/".$this->email."/i");
		}
		return new EMongoDocumentDataProvider('Member', array(
			'criteria' => $cond,
		    'sort'=>array(
		        'attributes'=>array(
					'email'		            
		        )
		    ),
		    'pagination' => array(

	    	)
		));
	}

	public function beforeSave(){

		return parent::beforeSave();
	}

	public function updateMember($subcribeEmail = true){
		$result = false;
		if($this->isNewRecord){
			$this->password = hashStr($this->password,2);
			$this->create_date = time();
			$result = $this->insert();
			if($subcribeEmail == true && $result == true){
				$subcriber = new Subscriber;
				$subcriber->updateSubcriber($this->email,$this->_id.'');
			}
		}else{

		}
		if(!$result){
			$this->addError("email","Có lỗi xảy ra trong quá trình xử lý, vui lòng thử lại hoặc liên hệ với người quản lý");
		}
		return $result;
	}
}
?>